/* 
  编程式导航：
    props.history.push()        打开新页面(组件)
    props.history.replace()     替换页面(组件) - 重定向
    props.history.goBack()      后退
    props.history.goForward()   前进

  学习姿势：
    不同的技术栈，写法类似但又不一样。
    所以建议大家打印式学习。把 props 对象打出来，看看有什么，再使用。
    遇到不懂的也可以带着目的去查手册，查百度。
*/

import React from 'react';
import './App.css';
import { HashRouter, Route, Link } from 'react-router-dom';


const Home = (props) => {
  console.log(props);
  return <div>
    首页
    {/* 打开新页面(组件) */}
    <button onClick={() => props.history.push('/list/1')}>直达某个详情页</button>
  </div>;
};

const List = (props) => {
  return (
    <div>
      <h1>列表页</h1>
      <ul>
        <li><Link to="/list/1">详情1</Link></li>
        <li><Link to="/list/2">详情2</Link></li>
      </ul>
    </div>
  );
};

const ListDetail = (props) => {
  console.log(props);
  return (
    <div>
      <h1>{props.match.params.id} 的详情页</h1>
      {/* 后退到上一页(组件) */}
      <button onClick={() => props.history.goBack()}>后退</button>
    </div>
  );
};

class App extends React.Component {
  render() {
    return (
      <div className="App">
        <HashRouter>
          <nav>
            <Link to="/"><button>切换首页</button></Link>
            <Link to="/list"><button>切换列表页</button></Link>
          </nav>
          <section>
            {/* 默认情况下，路由是包含匹配 */}
            {/* exact 精确匹配全等比较 */}
            <Route exact path="/" component={Home}></Route>
            <Route exact path="/list" component={List}></Route>
            <Route path="/list/:id" component={ListDetail}></Route>
          </section>
        </HashRouter>
      </div>
    );
  }
}

export default App;